import java.util.List;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Types;

public class JogadorDao {

	private static JogadorDao jogadorDao;
	public static final int SUCCESS = 1;
	public static final int FAIL = 0;
	
	public static JogadorDao getInstance() {
		if (jogadorDao == null) {
			jogadorDao = new JogadorDao();
		}
		return jogadorDao;
	}

	public Jogador login(String login, String password) {

		Jogador jogador = null;
		try {
			Connection connection = ConexaoUtil.getInstance().getConnection();
			
			String sql = "SELECT * FROM jogador WHERE login = ? AND password = ?";
			
			PreparedStatement statement = connection.prepareStatement(sql);
			statement.setString(1, login);
			statement.setString(2, password);
			
			ResultSet rs = statement.executeQuery();
			
			if(rs.next()) {
				jogador = new Jogador(rs);
			}

			rs.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e.getMessage(), e);
		}
		return jogador;
	}

	public int insert(Jogador jogador) {

		int resultado = FAIL;
		try {
			Connection connection = ConexaoUtil.getInstance().getConnection();
			
			String sql = "INSERT INTO jogador(id, nome, login, password, email) VALUES(?, ?, ?, ?, ?)";
			
			PreparedStatement ps = connection.prepareStatement(sql);
			ps.setNull(1, Types.NULL);
			ps.setString(2, jogador.getNome());
			ps.setString(3, jogador.getLogin());
			ps.setString(4, jogador.getPassword());
			ps.setString(5, jogador.getEmail());
			
			resultado = ps.executeUpdate();
			
			ps.close();
			connection.close();
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e.getMessage(), e);
		}
		return resultado;
	}
}
